#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
// 定义链表结点数据类型
typedef int SLTDateType;
// 链表结点结构体
typedef struct SListNode
{
    SLTDateType data;  // 数据域
    struct SListNode* next;  // 指针域，指向下一个结点
}SListNode;
 
// 动态申请一个结点
SListNode* BuySListNode(SLTDateType x);
 
// 单链表打印
void SListPrint(SListNode* plist);
 
// 单链表尾插
void SListPushBack(SListNode** pplist, SLTDateType x);
 
// 单链表的头插
void SListPushFront(SListNode** pplist, SLTDateType x);
 
// 单链表的尾删
void SListPopBack(SListNode** pplist);
 
// 单链表头删
void SListPopFront(SListNode** pplist);
 
// 单链表查找
SListNode* SListFind(SListNode* plist, SLTDateType x);
 
// 单链表在pos位置之后插入x
void SListInsertAfter(SListNode* pos, SLTDateType x);
 
// 单链表删除pos位置之后的值
void SListEraseAfter(SListNode* pos);
 
// 单链表在指定位置插入结点
void SLTInsert(SListNode** pplist, SListNode* pos, SLTDateType x);
 
// 单链表删除指定位置的结点
void SLTErase(SListNode** pplist, SListNode* pos);
 
// 销毁单链表
void SLTDestroy(SListNode** pplist);